package com.mason.oauthresource.controller;

import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@ResponseBody
@RequestMapping("/data")
public class MyResourceController {


    /**
     * 例如: 原系统A ,这里是系统B的回调地址
     * 在A中用户为 admin,对应系统B中的用户为root
     * 此时需要实现如下四步
     * @param code
     * @return
     */
    @GetMapping("/common")
    public String common(String code) {

        // 1. 通过code获取访问令牌
        // https://doc.apipost.net/docs/detail/33e45d800c7c000?target_id=3dea5d247bb026
        // 2. 拿到令牌后，通过访问令牌获取用户信息
        Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
        Object principal = authentication.getPrincipal();
        System.out.println(principal.toString());

        // 3. 根据用户信息进行映射查找root和当前root的登录认证

        // 4. 将用户信息保存到session或其他持久化存储中

        // 至此,已经拿到系统A的访问token,以及当前系统B 已经登录,即此时既可以访问系统A,也可以访问系统B了

        return code;
    }

    @GetMapping("/info")
    public String info(String code) {
        return code;
    }
}
